package database

import (
	"database/sql"
	"github.com/jsoq/goblog/pkg/logger"
	"time"
)

var DB *sql.DB

//Init
func Initialize(){
	initDB()
	createTables()
}

func initDB() {

	var err error
	mysql_config := "root:1995@tcp(127.0.0.1:3306)/goblog2?charset=utf8"

	// 准备数据库连接池
	DB, err = sql.Open("mysql",mysql_config)
	logger.LogError(err)

	// 设置最大连接数
	DB.SetMaxOpenConns(100)
	// 设置最大空闲连接数
	DB.SetMaxIdleConns(25)
	// 设置每个链接的过期时间
	DB.SetConnMaxLifetime(5 * time.Minute)

	// 尝试连接，失败会报错
	err = DB.Ping()
	logger.LogError(err)
}

func createTables() {
	createArticlesSQL := `CREATE TABLE IF NOT EXISTS articles(
    id bigint(20) PRIMARY KEY AUTO_INCREMENT NOT NULL,
    title varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    body longtext COLLATE utf8mb4_unicode_ci
); `

	_, err := DB.Exec(createArticlesSQL)
	logger.LogError(err)
}